package com.sinbad.interview.solution.question01.case01;

import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;

/**
 * 按行读取（推荐）
 *
 * @author sinbad.cheng
 * @since 2025-04-14 16:43
 */
public class LargeFileReader {

    public static void processLargeFile(String filePath) throws IOException {
        try (BufferedReader reader = new BufferedReader(new FileReader(filePath))) {
            String line;
            // 30442863
            long count = 0;
            while (reader.readLine() != null) {
                // 处理单行数据（示例：统计行数）
//                processLine(line);
                synchronized (LargeFileReader.class) {
                    count++;
                }
            }
            System.out.println("处理了" + count + "行数据");
        }
    }

    private static void processLine(String line) {
        // 自定义处理逻辑（如写入其他文件、统计等）
        System.out.println(line);
    }

    public static void main(String[] args) throws IOException {
        processLargeFile("numbers.txt");
    }
}
